1. Field of the Invention
The invention relates generally to storage controllers and more specifically relates to Serial Advanced Technology Attachment (“SATA”) affiliation transfers.
2. Discussion of Related Art
Serial Attached Small Computer System Interface (“SAS”) comprises a family of standards for a computer system to couple with high speed peripheral devices (including storage devices). Many details of the SAS family of standards may be found at www.t10.org. For example, the SATA Tunneling Protocol (“STP”) allows a computer system having a SAS interface to communicate with a SATA device (including a SATA disk drive) through a tunnel established for SATA related communications in a SAS environment.
Multiple computer systems may communicate with a single SATA device through at least a SAS expander and/or a SATA multiplexer. However, a SATA device may only be associated with a single computer system at a time. The computer system (or a controller coupled with the computer system) is often referred to as an STP initiator, and the association with the single STP initiator is often referred to as an affiliation. Because there can be multiple STP initiators, the affiliation is transferred from a first STP initiator to a second STP initiator when the second STP initiator needs to communicate with the SATA device. If the second STP initiator attempts to send a command to the SATA device when the first STP initiator still owns the affiliation, the second STP initiator would receive a particular error code indicating an affiliation ownership block.
An STP initiator may need to send multiple commands to a SATA device. An affiliation may be transferred from the first STP initiator to the second STP initiator even when the first STP initiator has only sent a few commands. This is because the second STP initiator may also need to send commands to the SATA device. But the affiliation is then transferred right back to the first STP initiator because the first STP initiator still has more commands to send, even when the second STP initiator has only sent a few commands. However, the affiliation is again transferred to the second STP initiator because the second STP initiator has more commands to send.
Affiliation transfers can add significant processing overhead to each STP initiator. Especially when the affiliation is constantly transferred between STP initiators, performance of the SATA device can be impacted significantly as the STP initiators are unable to readily send commands and make full use of the SATA device.
Thus it is an ongoing challenge to improve performance of a SATA device when affiliation transfers between two or more STP initiators are involved in accessing the SATA device.